package gu.sql2java.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import gu.sql2java.BaseBean;
import gu.sql2java.TableManager;

/**
 * 表信息定义注解
 * @author guyadong
 * @since 3.32.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface RowMeta {
	String tablename() default "";
	String tableType() default "";
	Class<? extends BaseBean> beanType() default BaseBean.class;
	String coreClass() default "";
	@SuppressWarnings("rawtypes")
	Class<? extends TableManager> managerInterfaceClass() default TableManager.class;
	String alias() default "";
	String[] columnNames() default {}; 
	String[]  columnTypeNames() default {};
	String[]  columnJavaNames() default {};
	String[]  getters() default {};
	String[]  setters() default {};
	Class<?>[] columnTypes() default {};
	int[] columnSizes() default {};
	int[] sqlTypes() default {};
	String[]  primaryKeyNames() default {};
	String[]  junctionTablePkMap() default {};
	Class<?> lockColumnType() default Object.class;
	String lockColumnName() default"";
	String[]  foreignKeys() default {};
	String[]  importedFknames() default {};
	String[]  indices() default {};
	String autoincrement() default "";
	String[] localScopeColumns() default{};
	String[] thriftScopeColumns() default{};
	String[] jsonScopeColumns() default{};
}
